﻿using Ken_WPF_UI.Common;
using Ken_WPF_UI.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace Ken_WPF_UI.View
{
    /// <summary>
    /// ComboBoxWindow.xaml 的交互逻辑
    /// </summary>
    public partial class ComboBoxWindow : Window
    {


        public List<ClassInfo> list = DataUtil.GetMyList();

        public ComboBoxWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //方式一  ItemSource绑定
            //this.classComboBox.ItemsSource = list;//好处是方便  但移除和新增 就比较麻烦 建议 使用items进行Add

            #region 公共代码
            this.classComboBox.DisplayMemberPath = "Name";//显示 对应的属性名 
            this.classComboBox.SelectedValuePath = "Code";//实际值  对应的属性名
            this.classComboBox.SelectedIndex = 0;//这个必须放在 设置显示和实值 之后 才生效
            #endregion


            //方式二  直接操作items
            //list.ForEach(item => { this.classComboBox.Items.Add(item);});

            //方式三  使用DataContext 进行绑定 但在页面上对应的ComboBox 标签的ItemsSource属性 值设为{Binding}
            this.classComboBox.DataContext = list;//好处是方便  但移除和新增 就比较麻烦 建议 使用items进行Add

        }

       

        private void Add_Button_Click(object sender, RoutedEventArgs e)
        {
            //下拉框必须收起来 才能生效  暂没解决这个问题
            this.classComboBox.IsDropDownOpen = false;
            this.classComboBox.IsSynchronizedWithCurrentItem = true;


            //方式一 直接操作 items
            //this.classComboBox.Items.Add(new Class() { Code = $"{new Random().Next(1000, 9999)}", Name = $"高{new Random().Next(5, 10)}-{new Random().Next(1, 5)}班" } );

            //方式二  ItemSource解绑（置空） 重新设置绑定
            this.classComboBox.ItemsSource = null;
            list.Add(new ClassInfo() { Code = $"{new Random().Next(1000, 9999)}", Name = $"高{new Random().Next(5, 10)}-{new Random().Next(1, 5)}班" });
            this.classComboBox.ItemsSource = list;//好处是方便  但移除和新增 就比较麻烦 建议 使用items进行Add
            //this.classComboBox.DisplayMemberPath = "Name";//显示 对应的属性名 
            //this.classComboBox.SelectedValuePath = "Code";//实际值  对应的属性名
            this.classComboBox.SelectedIndex = 0;//这个必须放在 设置显示和实值 之后 才生效

  
            
        }

        private void Remove_Button_Click(object sender, RoutedEventArgs e)
        {
            //下拉框必须收起来 才能生效  暂没解决这个问题
            if (this.classComboBox.Items.Count>1)
            {
                //this.classComboBox.IsDropDownOpen = false;

                //方式一 直接操作 items
                //this.classComboBox.Items.RemoveAt(this.classComboBox.Items.Count-1);

                //方式二  ItemSource解绑（置空） 重新设置绑定
                this.classComboBox.ItemsSource = null;
                list.RemoveAt(list.Count - 1);
                this.classComboBox.ItemsSource = list;//好处是方便  但移除和新增 就比较麻烦 建议 使用items进行Add
                //this.classComboBox.DisplayMemberPath = "Name";//显示 对应的属性名 
                //this.classComboBox.SelectedValuePath = "Code";//实际值  对应的属性名
                this.classComboBox.SelectedIndex = 0;//这个必须放在 设置显示和实值 之后 才生效
                //this.classComboBox.UpdateLayout();
            }
            
        }
    }
}
